package io.github.zerobyteword.springfasterstartup.config;

import java.util.List;

public class AsyncInitProperties {
    private boolean enabled = true;
    private int threadNum = 32;

    /**
     * 统计bena初始化耗时
     */
    private boolean collectInitTime = true;

    /**
     * 默认显示最慢耗时bean数量
     */
    private int slowestBeanNum = 30;
    private InnerProperties includes;
    private InnerProperties excludes;

    public boolean isEnabled() {
        return enabled;
    }

    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
    }

    public boolean isCollectInitTime() {
        return collectInitTime;
    }

    public void setCollectInitTime(boolean collectInitTime) {
        this.collectInitTime = collectInitTime;
    }

    public int getSlowestBeanNum() {
        return slowestBeanNum;
    }

    public void setSlowestBeanNum(int slowestBeanNum) {
        this.slowestBeanNum = slowestBeanNum;
    }

    public int getThreadNum() {
        return threadNum;
    }

    public void setThreadNum(int threadNum) {
        this.threadNum = threadNum;
    }

    public InnerProperties getIncludes() {
        return includes;
    }

    public void setIncludes(InnerProperties includes) {
        this.includes = includes;
    }

    public InnerProperties getExcludes() {
        return excludes;
    }

    public void setExcludes(InnerProperties excludes) {
        this.excludes = excludes;
    }

    public static class InnerProperties {
        private List<String> beanNames;
        private List<String> annotations;
        private List<String> rootClasses;
        private List<String> packages;

        public List<String> getBeanNames() {
            return beanNames;
        }

        public void setBeanNames(List<String> beanNames) {
            this.beanNames = beanNames;
        }

        public List<String> getAnnotations() {
            return annotations;
        }

        public void setAnnotations(List<String> annotations) {
            this.annotations = annotations;
        }

        public List<String> getRootClasses() {
            return rootClasses;
        }

        public void setRootClasses(List<String> rootClasses) {
            this.rootClasses = rootClasses;
        }

        public List<String> getPackages() {
            return packages;
        }

        public void setPackages(List<String> packages) {
            this.packages = packages;
        }
    }
}
